import {createStoreBindings} from 'mobx-miniprogram-bindings'
import {store} from '../../store/store'

// 获取应用实例
const app = getApp()
console.log("app:", app)

// 导入behavior
const myBehavior = require('../../behaviors/my-behavior')

/**
 * 页面的生命周期回调函数，声明在页面下xxx.js中，顺序如下：
 * 1.onLoad：监听页面加载，一个页面只调用1次；
 * 2.onShow：监听页面显示，每次显示都会调用；
 * 3.onReady：监听页面初次渲染完成，一个页面只调用1次；
 * 4.onHide：页面隐藏；
 * 5.onUnload：监听页面卸载，一个页面只调用1次。
 */
Page({
  // 先导入behavior，后注册behavior，才能使用behavior中的属性或方法
  behaviors: [myBehavior],
  // 页面的初始数据 
  data: {
    info: 'Hello World',
    imgSrc: './img/002.jpg',
    randomNum: Math.random().toFixed(2) * 10,
    count: 0,
    msg: '',
    type: 3,
    array: [
      {
        id: 1,
        name: '张三',
        age: 18,
      },
      {
        id: 2,
        name: '李四',
        age: 20,
      },
    ],
    // 下拉触底事件，模拟加载下一页数据
    onReachBottomHidden: true,
    n1: 0,
    n2: 0,



    /////
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseGetUserProfile: false,
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName') // 如需尝试获取用户信息可改为false
  },

  // 事件处理函数
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  bindViewLongTap() {
    console.log(111)
  },
  // 事件冒泡，target和currentTarget
  outerHandler(e) {
    console.log("事件冒泡到父容器：")
    console.log("e.target:", e.target)
    console.log("e.currentTarget:", e.currentTarget)
  },
  btnTapHandler(e) {
    console.log("事件当前对象：")
    console.log("e.target:", e.target)
    console.log("e.currentTarget:", e.currentTarget)
  },

  // 通过this.setData(dataObj)给data中的属性赋值
  changeCount() {
    this.setData({
      count: this.data.count + 1
    })
  },

  // bindinput事件处理函数
  inputHandler1(e) {
    // e.detail.value 为变化过后的文本框的新值
    console.log('文本框最新值：', e.detail.value)
  },

  // input框和data数据绑定
  inputHandler2(e) {
    this.setData({
      msg: e.detail.value
    })
  },
  // 编程式跳转页面，跳转到tapBar页面
  gotoMessagePage() {
    wx.switchTab({
      url: '/pages/message/message',
      success: () => {
        console.log('跳转到消息页面成功')
      }
    })
  },
  // 跳转到非tapBar页面
  gotoInfoPage() {
    wx.navigateTo({
      url: '/pages/info/info',
    })
  },
  gotoInfoPageParams() {
    wx.navigateTo({
      url: '/pages/info/info?name=Jack&age=35',
    })
  },

  // 下拉刷新事件处理函数
  onPullDownRefresh() {
    console.log('触发了下拉刷新页面，将count重置为0')
    this.setData({
      count: 0
    })
    // 做完处理之后，停止下拉刷新效果
    wx.stopPullDownRefresh()
  },

  // 监听上拉触底事件
  onReachBottom() {
    console.log('触发了上拉触底事件')
    // 模拟加载下一页数据
    setTimeout(() => {
      this.setData({
        onReachBottomHidden: false
      })
    }, 1000);
  },

  // 监听自定义的子组件事件
  onMyEventFunc(e) {
    console.log('父组件页面监听到了子组件触发的onMyEventFunc事件，参数为：', e.detail)
  },

  // 选择子组件
  getComponent() {
    let comp1 = this.selectComponent('.component1-class')
    console.log('子组件1：', comp1)
    let comp2 = this.selectComponent('#component2-id')
    console.log('子组件2：', comp2)
    // 调用子组件内部的方法
    comp2.setData({
      count: comp2.data.count + 1
    })
  },
  // 调用behavior中的方法
  callHelloInBehavior() {
    this.hello()
  },
  // Promise化后的api调用
  async getInfoPromise() {
    const {data:res} = await wx.p.request({
      method: 'GET',
      url: 'https://www.escook.cn/api/get',
      data: {name:'zs',age:20}
    })
    console.log('同步api调用结果：', res)
  },
  // 调用store中的action
  myUpdateNum1(e) {
    this.updateNum1(e.target.dataset.step)
  },
  myUpdateNum2(e) {
    this.updateNum2(e.target.dataset.step)
  },








  









  // 生命周期函数：监听页面加载
  onLoad() {
    console.log('index-onLoad')
    // 将store绑定到当前页面
    this.storeBindings = createStoreBindings(this, {
      store,
      fields: ['numA','numB','sum'],
      actions: ['updateNum1','updateNum2']
    })

    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }

    this.testApiGet() 
  },

  onShow() {
    console.log('index-onShow')
  },

  onReady() {
    console.log('index-onReady')
  },

  onHide() {
    console.log('index-onHide')
  },

  onUnload() {
    console.log('index-onUnload')
    // 当前页面卸载store
    this.storeBindings.destroyStoreBindings()
  },

  testApiGet() {
    wx.request({
      url: 'http://localhost:8080/test4',
      method: 'GET',
      data: {
        name: 'zs',
        age: 22
      },
      success: resp => {
        console.log('get请求测试：', resp)
      }
    })
  },


  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  getUserInfo(e) {
    // 不推荐使用getUserInfo获取用户信息，预计自2021年4月13日起，getUserInfo将不再弹出弹窗，并直接返回匿名的用户个人信息
    console.log(e)
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  }
})
